<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>let 与 const</title>
</head>
<body>
    
</body>
<script>
    //es5  用var
    // var num = 10
    // var num = 20
    // console.log(num);

    //es 6 let 与 const
    //一、用let 去声明变量
    //1. let 不允许重复声明变量  var可以
    //2. let 不允许声明提升，var 可以
    //3. let 声明支持代码块（作用域） var 不受限制
    //4. let 声明的变量不会挂载到顶层对象，var会挂载到顶层对象

    // let num = 10
    // let num = 20

    // console.log(num);
    // let num = 2;


    // if(true){
    //     var num = 20;
    // }

    // console.log(window.num)

    // var num = 10

    // let num2 = 20

    // console.log(window.num);
    // console.log(window.num2);

    // 二、const 声明常量
    // const 与 var
    //1. const 不允许重复声明变量  var可以
    //2. const 不允许声明提升，var 可以
    //3. const 声明支持代码块（作用域） var 不受限制
    //4. const 声明的变量不会挂载到顶层对象，var会挂载到顶层对象

    // const 与 let 
    // 1. let声明可以不赋值， const 声明必须赋值
    // 2. let声明变量可以被更改， const 声明常量是不能修改的
    // 3. const 声明对象不能修改，但是可以修改里面的键值对，属性

    // let num;
    // num = 20
    // console.log(num);
    // const num = 30;
    // num = 40
    // console.log(num);

    // const obj = {
    //     a:1,
    //     b:2
    // }

    // obj.a = 20

    // console.log(obj);


</script>
</html>